传输层的洪水攻击

您所在的位置:网站首页 syn flood防御方法 传输层的洪水攻击

传输层的洪水攻击

2023-03-27 08:25| 来源: 网络整理| 查看: 265

从这一节课开始将会来研究一些针对各种服务器的攻击技术。首先来介绍一种最为典型的攻击技术:拒绝服务攻击。这种技术由来已久,在大概 10 多年前的时候,曾经有一条关于服务器攻击的新闻轰动一时。当时正是我刚刚涉足网络安全这个领域的时候,很巧的是这个发起攻击的黑客和我都在同一个城市。当时的新闻是这样报道这一案件的,“从 2004年 10 月起,北京一家音乐网站连续 3 个月遭到一个‘僵尸网络’的‘拒绝服务’攻击,造成经济损失达 700 余万元。日前,经公安部、省公安厅和唐山警方的努力,隐藏在唐山的神秘黑客浮出水面。”

拒绝服务攻击的相关理论服务器所面临的最大威胁当数拒绝服务攻击,拒绝服务攻击其实是一类攻击的合称。所有这种类型的攻击的目的都是相同的,那就是要是使受攻击的服务器系统瘫痪或服务失效,从而使合法用户无法得到相应的资源。虽然服务器的功能多种多样,但是这些差异都是表现在应用层,无论它们使用的是什么应用程序,但是最终都会使用到传输层的协议。而传输层常用的协议只有 TCP 和 UDP两种。因此攻击者只需要研究这两个协议的缺陷,就几乎可以实现对所有类型服务器的攻击。目前已经出现了很多种类型的拒绝服务攻击方式,我们只挑选其中最为典型的两种SYN flooding 攻击和 UDP flooding 攻击进行讲解。其中 SYN flooding 攻击是针对 TCP 协议的,它的主要目的是占用目标上所有可用的连接请求。而 UDP flooding 攻击则是针对 UDP协议的,主要目的是耗尽目标所在网络的带宽。

TCP连接的建立方式TCP协议在进行通信之前协议先建立连接,列如一个客户机和服务器之间在发生实际的数据之前,会互相向对方发生控制数据包。这次过程使得客户机和服务器都进入连接状态,然后就可以进行数据交换,我们称为3次握手握手成功会让客户机和服务器之间就建立了一个连接

第一次握手有客户端发起,客户端产生一个SYN数据包并将其发送给服务端

很多时候这个相对值并不利于分析问题,不过可修改设置。”编辑”——>”首选项”——>”Protocols”——>”TCP”——>取消右则”Relative sequence numbers”

转换之后就可以看到初始序列号的真实性客户端将要发送的数据包中的tcp.flags.sys为设置为1客户端将要发送的数据包中tcp.flags的其他位(tcp.flags.ack)设置为0客户端将设置要发送的数据包中tcp.windows_size的值,其目的是向服务端提供自己当前缓冲区的大小,这里的值为tcp.windows_size_value == 8192,TCP最大片段大小(MSS)为1440,表示客户端可以接受8192/1440=5个数据包客户端会根据实际位置tcp.options,例如最大片段大小(MSS)、No-Operation(NOP)、window scale、timestamps和SACK permitted等值发送给服务端

第二次握手

服务端产生一个ISN值,将要发送的数据包中tcp.seq的值设置为这个ISN值服务端将接收到的数据包中的初始序列号加1,然后将这个值赋值给要发送的数据包中的tcp.ack位设置要发送的数据包中的tcp.options的值来回应客户端

第3次握手

现在客户端与服务端成功的交换了学校,两者可以建立TCP连接了客户端将收到服务器发来的数据包中的ISN的值加1之后,赋值给要发送的数据包中的tcp.seq=9516,将收到的数据包中的tcp.seq加1之后,赋值给要发送的数据包中tcp.ack=6516客户端设置要发送的数据包中 tcp.flags.ack == 1客户端会再次发送窗口大小的值,设置要发送的数据包中tcp.window_size_value

SYN flooding攻击这种攻击最早出现于 1996 年,当时大量的网站服务器都遭受到了这种 SYN flooding攻击。这种攻击利用了 TCP 连接的 3 次握手,但是这个握手过程是建立在理想状态下的,而在实际状态下当服务器收到了来自客户端发送的 SYN 请求之后,会发出一个 SYN-ACK回应,是连接进入到了半开状态,但是这个回应很有可能会因为网络问题无法达到客户端。所以此时需要给这个半开的连接设置一个计时器,如果计时完成了还没有收到客户端的ACK 回应,就会重新发送 SYN-ACK 消息,直到超过一定次数之后才会释放连接。服务器需要为每一个半开连接分配一定的系统资源,所以当出现数量众多的半开连接时,服务器就会因为资源耗尽,进而停止对所有连接请求的响应。

模拟SYN flooding攻击我们在这次实验中需要使用两个虚拟机,一个是 Kali Linux 2,另一个是 Windows,考虑到这次试验要消耗大量的系统资源,所以这个实验中我们不使用ENSP,而是在 VMware 中载入两台设备。即便如此,在使用虚拟设备时,由于产生的数据包数量众多,Wireshark 也经常会出现假死状态。这里面我们将 Kali Linux 2 和 Windows 的网络连接方式都设置为 NAT,IP 获取方式都设为自动获取 IP(DHCP 分配)

kali:192.168.0.142 2K3:192.168.0.130

使用Hping3发起SYN flooding攻击

这次我们采用 Kali Linux 2 中自带的 hping3 来进行一次拒绝服务攻击。这是一款用于生成和解析 TCP/IP 协议数据包的开源工具,之前推出过 hping 和 hping2 两个版本,目前最新的版本是 hping3。利用这款工具我们可以快速定制数据包的各个部分,hping3 也是一个命令式的工具,其中的各种功能要依靠设置参数来实现。启动 hping3 的方式就是在 Kali Linux2 中启动一个终端,然后输入“hping3”即可:root@kali:~# hping3 hping3>好了,现在我们就利用刚刚介绍过的 hping3 参数来构造一次基于 TCP 协议的拒绝服务攻击。在 Kali Linux 2 中打开一个终端,然后在终端中输入:hping3 -q -n —rand-source -S -p 80 —flood 目标IP 这时攻击就开始了,在这个过程中你可以随时使用 Ctrl+C 组合键来结束这次攻击。

使用WireShark的流向图功能来分析SYN flooding攻击首先我们来查看这种来自同一个地址的 SYN flooding 攻击,使用 Wireshark 捕获这些伪造的请求。如果想要更好地了解网络中发生了什么,可以绘制出 TCP 端点之间的数据流,那一切就更直接明了。Wireshark 中提供了一个 TCP 流量图,这是它的一个相当强大的功能。1.1.1.1向192.168.32.132发送了大量的SYN请求,但是没有任何下一步行动如果攻击者攻击时位置了随机源地址,此时如在使用流向图进行查看的话,通用可以看到大量的地址只向服务器发送了一个SYN请求。短时间出现了大量的数据包,这些数据包并没有后续

如何解决SYN Flooding拒绝服务攻击

丢弃第一个 SYN 数据包反向探测

就是向SYN数据包的源地址发送探测包,然后在根据源地址的反应来判断数据包的合法性

代理模式

就是把防火墙作为代理,然后由防火墙代替服务器和客户机建立连接

在 Wireshark 中显示地理位置前面介绍了拒绝服务攻击(DoS),这种攻击的发起端通常是一台设备。现在设计了一种更高级的攻击方法:分布式拒绝服务攻击(DDoS),这种攻击指借助与客户/服务器技术,将多个计算机联合起来作为攻击平台wireshark有显示来源分布图插件,首先在首选项对IP协议进行调整下载地址:https://dev.maxmind.com/geoip/geoip2/geolite2/



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3